home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 007 / jovept2.arc / JOVE.1 next >
Text File  |  1985-05-30  |  18KB  |  331 lines

  1. .de FN
  2. .sp 1
  3. \f3\\$1    \\$2\f1    \" command name, and key binding
  4. .sp 0    \" To fool the filling
  5. ..
  6. .TH JOVE LSRHS
  7. .SH NAME
  8. jove - Jonathan's Own Version of Emacs
  9. .SH SYNOPSIS
  10. .B jove
  11. [-t tagname] [file1 file2 ... ]
  12. .SH DESCRIPTION
  13. .ll 65
  14. .ad
  15. .PP
  16. Jove is an interactive display oriented editor which allows one to
  17. modify text easily.  Jove stands for \f3Jonathan's Own Version of
  18. Emacs\f1. This editor is modeled after the EMACS written at MIT by
  19. Richard  Stallman.  Jove has tried to stick to the conventions of real
  20. EMACS, but has strayed away from them in several places.  The real EMACS
  21. is extensible, which means the user can change the way the editor
  22. behaves to his own liking. He can do this by changing the commands that
  23. each key invokes or by writing new commands.  Although new commands
  24. cannot be written in \f3jove\f1, existing commands can be \f3bound\f1
  25. to any key. There are several concepts a user needs to understand before
  26. he can use the editor to his full advantage. The three most important
  27. are \f3buffers\f1, \f3windows\f1 and \f3command binding\f1.
  28. .PP
  29. In most cases, Jove is used to edit already existing files.  Jove reads
  30. files into \f3buffers\f1.  A \f3buffer\f1 is where Jove stores its
  31. version of the file; changes made in the editor are made to the buffer,
  32. not the original file.  If the user makes a change but wishes he did
  33. not,  he can simply reread the file from the disk into a fresh buffer.
  34. If Jove is given no files to edit it creates an empty buffer with no
  35. file associated with it.  When the user has finished editing and is
  36. satisfied with his changes, he can save the buffer to a file with the
  37. \f3write-named-file\f1 command. This command asks for a file name and
  38. writes the contents of the buffer to that file.  Once a buffer is
  39. written to a file, the old version of the file is gone forever, so be
  40. careful!! Jove complains if the buffer is modified and an attempt is
  41. made to leave before saving the changes.  It says \f3Modified buffers
  42. exists.  Leave anyway?\f1.  Answering \f3no\f1 to this question will
  43. leave the user in the editor so that he can write the buffers he
  44. wishes.  If he wants to exit, e.g. he made a mistake, he should answer
  45. \f3yes\f1.
  46. .PP
  47. The current position in a buffer is called the \f3point\f1.  The
  48. \f3point\f1 should not be thought of as being on a character, rather
  49. as being between two characters, namely the character before the cursor
  50. and the character under the cursor.
  51. .PP
  52. Jove supports multiple buffers.  This means that more than one file can
  53. be edited at a time, each file having its own buffer.  Jove remembers
  54. what each buffer looks like while it is not in use.  This makes it
  55. possible to jump around from one buffer to another without losing any
  56. previous changes, and without having to save the changes each time a new
  57. buffer is selected.  Each buffer has its own set of characteristics that
  58. jove also remembers, so switching from one buffer to another can change
  59. the way the editor behaves.  Jove uses \f3windows\f1 to show what
  60. the buffer looks like at any time.
  61. .PP
  62. Often files are too large to fit in the terminals screen all at once.
  63. While in the editor, the screen acts as a \f3window\f1 into a buffer,
  64. always showing what the buffer looks like.  If the point moves past the
  65. top or bottom of the window, the window moves to where the point has
  66. moved.   When a line is too long to fit on the terminal, jove shows this
  67. by putting an \f3!\f1 at the end of the line.  Moving the point to a
  68. position that is off the screen horizontally causes the line containing
  69. the point to be \f3scrolled\f1 to the right or the left such that the
  70. \f3point\f1 is visible.  Only the current line is ever scrolled.  If the
  71. line containing the point is scrolled and the point moves to a different
  72. line, the scrolled line automatically moved back to its normal
  73. position.  The window reflects what is being done as it is being done, so
  74. what you see is ALWAYS what you get.
  75. .PP
  76. Initially there is only one window, but it is possible to divide a
  77. window so that there are two smaller windows. The smaller windows are
  78. exactly the same as the original window except for the amount of the
  79. buffer each can show at a time. Sometimes the same buffer will be shown
  80. in more than one window, and other times there will be a different
  81. buffer in each window.
  82. .PP
  83. There are many commands built into jove.  There is a command handler in
  84. jove that prompts for commands. When the name of a command typed in is
  85. unambiguous, that command will be executed. Since it is very slow to have
  86. to type in the name of each command every time it is needed, jove makes
  87. it possible to \f3bind\f1 commands to keys.  When a command is
  88. \f3bound\f1 to a key any future hits on that key will invoke that
  89. command.  All the printing characters are \f3initially\f1 bound to the
  90. function \f3self-insert\f1 so that typing any one of the printing
  91. characters causes it to be inserted into the text.  Any of the existing
  92. commands can be bound to any key.  Since there are more commands than
  93. there are keys, two keys are treated as \f3prefix\f1 commands.  When a
  94. key bound to one of the prefix commands is typed, the next character
  95. typed is interpreted on the basis that it was preceded by one of the
  96. prefix keys.  Initially \f3^X\f1 and \f3ESC\f1 are the prefix keys, and
  97. as you will see, many of the built in commands are initially bound to
  98. these "two stroke" keys.
  99. .PP
  100. Users will likely want to modify the default key bindings to his
  101. liking.  Since it would be quite a pain to have to set up the bindings
  102. each time jove is started up, jove reads commands from the file
  103. \f3.joverc\f1 in the user's home directory.  This commands are read as
  104. if they were typed to the command handler during an edit.  There can
  105. be only one command per line in the init file.  The \f3source\f1
  106. command can be used to read commands from a specified file.  This
  107. means that a macro can be used to change the key bindings, e.g. to
  108. enter a mode, by reading from a specified file which contains all the
  109. new bindings.
  110. .PP
  111. Jove is invoked by simply typing \f3jove\f1 to either \f3shell\f1 or
  112. \f3C-shell\f1.  If arguments are provided on the command line, jove
  113. treats each as a file to be read, and reads it into its own buffer.
  114. The current buffer will be the first file read in, and the point will be
  115. at the beginning of the buffer.  There is one exception.  If jove sees a
  116. \f3-t\f1 on the command line it takes the next word to be a C tag and 
  117. reads in the file containing that tag.  Inexperienced users need not 
  118. worry about that though.  At the bottom of each window is the \f3mode
  119. line\f1 associated with that window.  A typical mode line might look
  120. like this:
  121. .sp 1
  122. .nf
  123.    \f3JOVE (TE)   Buffer: jove.1   "jove.1" *\f1
  124. .fi
  125. .sp 1
  126. The mode line always says \f3JOVE\f1.  The \f3TE\f1 inside the
  127. parentheses means the editor is in \f3text-fill\f1 mode (see \f3modes\f1
  128. below).  In this example the name of the buffer is \f3jove.1\f1 and
  129. the name inside the quotes is the file.  In this case the file is
  130. \f3jove.1\f1; in general the buffer name and the file name are the
  131. same. The \f3*\f1 at the end of the line indicates that the buffer
  132. has been modified but not saved.  The very bottom line on the screen is
  133. the \f3message line\f1.  This is where jove prints any messages and
  134. where jove prompts the user for more input.  For example, when the user
  135. wants to save his buffer, jove would ask for a file name to use on this
  136. line.
  137. .PP
  138. Once invoked, Jove is ready to accept commands from the user.  Most of
  139. the editor commands move the point around in the buffer and others
  140. change what the buffer looks like.  These commands operate on single
  141. characters, words, lines, and on regions.  One of the more common
  142. editor commands is the \f3self-insert\f1 command.
  143. .PP
  144. The \f3self-insert\f1 command simply inserts the character that invoked it
  145. into the buffer at the point.  Because the point is really
  146. between two characters, inserting a character at point pushes all the
  147. characters, from the point to the end of the line, over to the right to
  148. make room for the new character. The point moves one to the right
  149. staying just ahead of the newly inserted character.  This means that if
  150. the user wants to insert a word, he can just type the word.  If the
  151. point did not move  as he typed, he would have to move forward a
  152. character after each letter of the word was typed.  Characters
  153. which are not self inserting, for example those which are other editor
  154. commands, also can be inserted but must be \f3quoted\f1 first. This is
  155. done with the \f3quote-char\f1 command which inserts the next character
  156. typed no matter what character it is.
  157. .PP
  158. \f3CONTROL-Q\f1 (that is the \f3CTRL\f1 key typed with the \f3Q\f1 key
  159. at the same time) is an example of a \f3control\f1 character.  \f3^Q\f1
  160. is short hand for \f3CONTROL-Q\f1.  Many of the editor commands are
  161. \f3bound\f1 to \f3control\f1 keys initially since the rest of the
  162. characters are \f3self-inserting\f1.  \f3Escape\f1 characters are
  163. different from \f3control\f1 character in that they are typed in two
  164. keys strokes, namely the \f3ESC\f1 key followed by any other key.  If
  165. there is not a command bound to the \f3escape <character>\f1 sequence,
  166. the editor will complain.
  167. .PP
  168. The commands \f3forward-character\f1 and \f3backward-character\f1
  169. are bound to the keys \f3^F\f1 and \f3^B\f1 respectively.  They move
  170. forward and backward one character position in the buffer.  The commands
  171. \f3forward-word\f1 and \f3backward-word\f1 are bound to the keys
  172. \f3ESCAPE-F\f1 and \f3ESCAPE-B\f1 respectively.  They are the same is
  173. the \f3^F\f1 and \f3^B\f1 commands except that they operate on
  174. \f3words\f1.  The commands \f3next-line\f1 and \f3previous-line\f1 are
  175. examples are commands that operate on lines. There are commands that
  176. delete text in units of characters, words, and lines also.
  177. \f3delete-next-character\f1 deletes the character after point and
  178. \f3delete-previous-character\f1 deletes the character before point.
  179. \f3delete-next-word\f1 and \f3delete-previous-word\f1 are the same as the
  180. two delete character functions except that they operate on words.
  181. .PP
  182. Sometimes it is useful to run a command a specific number of times, for
  183. example to move down 10 lines, the sequence \f3ESC-10-^N\f1 will work, if
  184. the \f3^N\f1 is bound to the \f3next-line\f1 command.  In general,
  185. \f3ESCAPE\f1 followed by a number, followed by a command, runs that
  186. command \f3number\f1 times.  This is called giving the command a numeric
  187. argument, or providing a prefix argument. Some of the commands ignore
  188. numeric arguments, for example \f3read-file\f1, but most of the commands
  189. use the numeric argument.
  190. .PP
  191. A \f3region\f1 is defined as all the text between two buffer positions.
  192. \f3Marks\f1 provides a way to remember a position in the buffer other
  193. than the point.  The \f3set-mark\f1 command sets a mark to where the
  194. point is at the time the command is invoked.  Once a mark is set, the
  195. user can move the point anywhere else and later use various commands to
  196. manipulate the mark.  Aside from delimiting the region, the mark is also
  197. useful for remembering a spot that you may want to go back to.  To make
  198. this feature more useful, JOVE remembers 19 previous locations of the
  199. mark.  Most commands that set the mark push the old mark onto this
  200. stack.  To return to a marked location, invoking the \f3set-mark\f1
  201. command with a prefix argument (e.g. \f3^U-^@\f1) will do.  This moves
  202. the point to where the mark was, and restores the mark from the stack of
  203. former marks.  So repeated use of this command moves point to all of the
  204. old marks on the stack, one by one.  Since the stack  is actually a
  205. ring, enough uses of \f3^U-^@\f1 bring the point back to where it
  206. was originally.
  207. PP.
  208. It is sometimes necessary to get from one place in a buffer to another 
  209. quickly.  Using the primitive motion commands would work, but would be
  210. rather slow. \f3Search commands\f1 provide a quick and easy way to move
  211. over large portions of text.  The user is prompted for a string to
  212. search for.  The search starts from the point, so forward searches will
  213. not find any matches that are before the point, and reverse searches
  214. will not find any matches after the point.  If the search was forward
  215. and the editor manages to find the string, the point moves to the end of
  216. the string.  If the search was backward and the editor finds the string,
  217. the point moves to the beginning of the string. Otherwise the user will
  218. be informed of the failure and left where he was.  Jove supports
  219. \f3regular expressions\f1 also, but they are rather complicated. For
  220. complete documentation see \f3ed(1)\f1 in the UPM. Another useful
  221. command is the \f3replace-search\f1 command.  This command prompts the
  222. user for a search string, then prompts for a replacement string, and
  223. then searches the buffer for the search string replacing all occurrences
  224. with the replacement string.
  225. .bp
  226. Here is a list of all the commands, with a short description of each
  227. and the key that the command is initially bound to.
  228. .PP
  229. .so commands.1
  230. .ta 4 12
  231. .sp 2
  232. .bp
  233. The following are list of variables which change the way the editor
  234. behaves.  All the variables, and the effect they have on the behavior of
  235. the editor, are listed below.  When certain variables are set to non-zero
  236. values, jove prints their abbreviations (in parentheses) on the mode line.
  237. .PP
  238. .ta 30
  239. .FN allow-^S-and-^Q
  240. When set to non-zero, jove disables the stop (XOFF) and start (XON)
  241. characters, thus making it possible to bind editor commands to those
  242. keys.  Most often, the \f3^S\f1 and \f3^Q\f1 keys are the stop and start
  243. characters, which means when this variable is set, \f3search-forward\f1
  244. can be bound to \f3^S\f1, and \f3quote-char\f1 can be bound to \f3^Q\f1,
  245. like they are supposed to be bound.
  246. .FN auto-indent (AI)
  247. This variable affects the way the \f3RETURN\f1 key works. Normally
  248. typing \f3RETURN\f1 divides the current line at point moving point down
  249. to the next line. That still happens in this mode but the line is
  250. automatically indented the same as the previous line. This is useful for
  251. structure programming languages like C and PASCAL.
  252. .FN c-mode (C)
  253. This mode the tab character and the \f3}\f1.  Instead of just inserting
  254. the tab, the editor determines where the tab ought to be for the C
  255. language and tabs to there instead.  The same thing happens with the
  256. close brace.  It is tabbed to the right place and then inserted.
  257. .FN case-independent-search (CIS)
  258. This affects the way search works.  When in this mode, jove ignores the
  259. difference between upper case and lower case so \f3A\f1 matches \f3a\f1
  260. as well as \f3A\f1.
  261. .FN internal-tabstop (not-shown)
  262. This tells jove how many spaces a tab should take up when it is printed.
  263. The default is 8.
  264. .FN magic (MA)
  265. This mode makes regular expression available.  This is not the default
  266. because for new users because certain characters in the search strijng do
  267. not always do what they normally would.
  268. .FN make-all-at-once 
  269. Tells the editor to run \f3make\f1 with the \f3-k\f1 option when running
  270. the \f3compile-it\f1 command.
  271. .FN over-write (OV)
  272. This mode changes the way self-inserting characters work. Instead of
  273. pushing the rest of the line over, the character after the point is
  274. replaced.
  275. .FN physical-tapstop
  276. This tells jove how big the tabstops are for the specific terminal.
  277. When the terminal is in \f3tabs\f1 mode (see \f3stty\f1(1)), jove will
  278. take advantage of that fact, and optimize the cursor motion using tabs.
  279. .FN right-margin (not-shown)
  280. This is used by the \f3justify-paragram\f1 command, and says how long
  281. it should try to make each line.
  282. .FN show-match (SM)
  283. This affects the close parenthesis (brace) characters. When one of those
  284. is typed in this mode it is inserted normally. Then the cursor flashes
  285. to the matching open parenthesis (brace) for one second and then move
  286. back to point. If the match was not on the screen, nothing happens.
  287. If there is no match the user is informed of the error.
  288. .FN single-scroll
  289. This changes the way the editor behaves when the point moves out of the
  290. range of a window.  Instead of centering the line containing the point,
  291. the editor leaves the line at the top, or bottom of the screen
  292. (depending on which end the point moved off).  This is useful if the
  293. terminal is running at a slow baud rate.
  294. .FN text-fill (TF)
  295. When in this mode, the editor will automatically insert carriage returns
  296. when lines reach the right margin. The default \f3right-margin\f1 is
  297. 72.
  298. .FN write-files-on-make (not-shown)
  299. When non-zero, jove writes all the modified buffers when the
  300. \f3compile-it\f1 command is invoked (default is non-zero).
  301. .PP
  302. To put the editor on one of these modes, use the \f3set\f1 command.
  303. The set command prompts for one of the mode variables to set.  A
  304. non-zero value means the mode is on, and a value or 0 means the mode is
  305. off.
  306. .sp 1
  307. .nf
  308.    \f3JOVE (C-SM-AI)   Buffer: jove.c   "jove.c" *\f1
  309. .fi
  310. .sp 1
  311. If in these modes, typing \f3}\f1 would cause the \f3}\f1 to be indented
  312. before inserted, and then the cursor would flash to the matching
  313. \f3{\f1.
  314. .SH FILES
  315. /usr/tmp     where the temporary files are stored.
  316. .SH SEE ALSO
  317. edt(1), ed(1).
  318. .SH DIAGNOSTICS
  319. Jove diagnostics are meant to be self explanatory.
  320. .SH BUGS
  321. It doesn't garbage collect the tmp file so it could run out of tmp
  322. space when it doesn't have to.
  323. .sp 1
  324. There should be one bind-to-key command that works for both macros and
  325. built in commands.
  326. .sp 1
  327. There should be a way to abort \f3read-file\f1 and the search commands.
  328. .sp 1
  329. Jove should not blow up when it tries to source a file which doesn't
  330. have editor commands in it.
  331.